package com.lbt.javaSE.Alog;

import java.util.Stack;

public class StackP {
    public static boolean isValid(String s) {
        if (s==null) return false;
        Stack<String>stack=new Stack<>();   //存储结构
        String[] splits = s.split("");
        int end=0;
        for(int i=0;i<splits.length;i++){
            //左括号进栈
            if(("(".equals(splits[i]))||("[".equals(splits[i]))||("{".equals(splits[i]))){
                stack.push(splits[i]);
            }else { //右括号  匹配 匹配成功  返回true //不匹配 站清空
                //将弹出的元素-- 应该是左括号     数组上的元素因该是右括号
                if(stack.isEmpty()){    //有右括号但是当前栈为空  匹配失败
                    continue;
                }
                String pop=stack.pop(); //碰见右括号  从栈中取元素测试
                if((")".equals(splits[i]))&&("(".equals(pop))){
                    return true;
                }
                if(("]".equals(splits[i]))&&("[".equals(pop))){
                    return true;
                }
                if(("}".equals(splits[i]))&&("{".equals(pop))){
                    return true;
                }
                //不匹配 站清空
                stack.clear();
            }
        }
        return false;
    }

    public static void main(String[] args) {
        String str="(){}}{";
        boolean result = isValid(str);
        System.out.println(result);

    }
}
